package ar.pmt.modelo.beans;

import java.util.Calendar;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;


/**
 * @author mparissi
 * Bean de Modelo Incurrido
 *
 */
@Entity
@Table(name = "INCURRIDOS")
public class Incurrido extends PersistenceObject {
	
	/**
	 * Numero de dia del proyecto
	 */
	private Integer diaNumero;
	/**
	 * Fecha incurrido
	 */
	private Calendar fechaUsuario;
	/**
	 * Fecha del sistema en que se incurrio
	 */
	private Calendar fechaSistema;
	/**
	 * Costo en horas 
	 */
	private Float costoHoras;
	/**
	 * este se calculara de la siguiente manera:
	 * Asignacion.estimadoHoras - ETC
	 * ETC: proporcionado por el recurso asignado a la tarea
	 * Al objeto Asignacion se llega navegando a traves del objeto Tarea
	 * 
	 * Nota: Como se puede calcular (explicado arriba) por ahora no se utiliza este atributo
	**/
	private Float avanceHoras;
	/**
	 * Cant. de horas restantes para terminar 
	 */
	private Float etc;
    /**
     * Recurso que incurrio
     */
    @ManyToOne
    @Cascade({CascadeType.ALL })
    @JoinColumn(name = "idrecurso", nullable=false)
	private Recurso recurso;


	/**
	 * @return the diaNumero
	 */
	public Integer getDiaNumero() {
		return diaNumero;
	}

	/**
	 * @param diaNumero the diaNumero to set
	 */
	public void setDiaNumero(Integer diaNumero) {
		this.diaNumero = diaNumero;
	}

	/**
	 * @return the fechaUsuario
	 */
	public Calendar getFechaUsuario() {
		return (Calendar)fechaUsuario.clone();
	}

	/**
	 * @param fechaUsuario the fechaUsuario to set
	 */
	public void setFechaUsuario(Calendar fechaUsuario) {
		this.fechaUsuario = fechaUsuario;
	}

	/**
	 * @return the fechaSistema
	 */
	public Calendar getFechaSistema() {
		return fechaSistema;
	}

	/**
	 * @param fechaSistema the fechaSistema to set
	 */
	public void setFechaSistema(Calendar fechaSistema) {
		this.fechaSistema = fechaSistema;
	}

	/**
	 * @return the costoHoras
	 */
	public Float getCostoHoras() {
		return costoHoras;
	}

	/**
	 * @param costoHoras the costoHoras to set
	 */
	public void setCostoHoras(Float costoHoras) {
		this.costoHoras = costoHoras;
	}

	/**
	 * @return the avanceHoras
	 */
	public Float getAvanceHoras() {
		return avanceHoras;
	}

	/**
	 * @param avanceHoras the avanceHoras to set
	 */
	public void setAvanceHoras(Float avanceHoras) {
		this.avanceHoras = avanceHoras;
	}

	/**
	 * @return the recurso
	 */
	public Recurso getRecurso() {
		return recurso;
	}

	/**
	 * @param recurso the recurso to set
	 * @throws Exception manejda por aspecto
	 */
	public void setRecurso(Recurso recurso) throws Exception{
		this.recurso = recurso;
	}

	/**
	 * @return the etc
	 */
	public Float getEtc() {
		return etc;
	}

	/**
	 * @param etc the etc to set
	 */
	public void setEtc(Float etc) {
		this.etc = etc;
	}

}
